package tool

import (
	"openmanus/llm"
)

// Terminate 终止工具，用于结束代理的执行
type Terminate struct {
	*ToolBase
}

// NewTerminate 创建新的终止工具
func NewTerminate() *Terminate {
	parameters := llm.Schema{
		Type: "object", // 参数整体类型为对象
		Properties: map[string]any{
			"reason": map[string]any{ // 终止原因参数
				"type":        "string",
				"description": "终止的原因",
			},
		},
		Required: []string{"reason"}, // 必选参数
	}

	return &Terminate{
		ToolBase: NewToolBase(
			"terminate",
			"终止当前任务的执行，使用此工具来表明您已经完成了对用户请求的处理。",
			parameters,
		),
	}
}

// Execute 执行终止工具
func (t *Terminate) Execute(args map[string]interface{}) (*ToolResult, error) {
	reason, ok := args["reason"].(string)
	if !ok || reason == "" {
		reason = "任务已完成"
	}
	return SuccessResponse(reason), nil
}

// Cleanup 清理工具资源
func (t *Terminate) Cleanup() error {
	return nil
}
